/**
#####################################################################################
# 优先级				运算符				解释								结合方式		#
#———————————————————————————————————————————————————————————————————————————————————#
# 	1				() [] -> .			括号（函数等），数组，两种结构成员访问		由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
# 	2				! ~ ++ -- + - 		否定，按位否定，增量，减量，正负号，					#
# 				* & (类型) sizeof			间接，取地址，类型转换，求大小			由右向左		#
#———————————————————————————————————————————————————————————————————————————————————#
#	3				* / %				乘，除，取模						由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
#   4				+ -					加，减							由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
# 	5				<< >>				左移，右移							由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
#	6				< <= >= >			小于，小于等于，大于等于，大于			由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
#	7				== !=				等于，不等于						由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
#	8				&					按位与							由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
#	9				^					按位异或							由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
#	10				|					按位或							由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
#	11				&&					逻辑与							由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
#	12				||					逻辑或							由左向右		#
#———————————————————————————————————————————————————————————————————————————————————#
#	13				? :					条件								由右向左		#
#———————————————————————————————————————————————————————————————————————————————————#
#	14				= += -= *= /= &= 												#
#					^= |= <<= >>=		各种赋值							由右向左		#
#———————————————————————————————————————————————————————————————————————————————————#
#	15				,					逗号（顺序）						由左向右		#
#####################################################################################
####从右往左 2 ，13 ，14####

1.算数运算符  优先级 2，3，4
+ - * / % ++ --
表达式 ： 变量  常量 运算符 组成的式子
####################################
2.赋值运算符  优先级 14
= += -= *= /= &= 
作用是将一个值赋值给一个变量，运算顺序 右往左
####################################
3.关系运算符 优先级 6，7
<  > ==  !=  <=  >=
作用比较两边操作数  
结果 boolean 类型
####################################
4.逻辑运算符 优先级 12 11    2(! )
作用 用于对boolean型结果的表达式进行运算，运算结果总是boolean型。
&   都真 为真
| 	一真 为真
^ 	不同	为真
! 	反向	
&&	
||
####################################
5.位运算符				2(~ )
二进制计算 计算机底层 速度最快
~ 	按位取反  优先级最快 2
		~	0100 1111
			1011 0000
& 	按位与	2个操作数同为1 为1 ，其他情况为0
			1100 1100
		&	1010 1011
			1000 1000
| 	按位或	2个操作数有1 为1，同为0 为0
			1010 0001
		|	1111 1011
			1111 1011
^	按位异或	2个操作数相同为0，不同为1
			1011 0011
		^	0010 1010
			1001 1001
<<					操作数乘以位移的2次幂
100 << 3       等价 100 *  8
			100     00000000	00000000	00000000	01100100
			100<<3	00000000	00000000	00000011	00100000
			
带符号右移 》》			操作数除以位移的2次幂
-200>>3 		等价-200/8
			200		11111111	11111111	11111111	00111000	
					11111111	11111111	11111111	11111001

无符号右移	》》》
			-200>>>3
*@author leo
*@company leo's company
*@description java_study
2024年1月29日下午3:58:54
Administrator
 */

/*
package com.leo.第二章_JAVA的编程基础;
import java.util.Scanner;
@SuppressWarnings("unused")
public class U2_L8运算符与优先级 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//int x=1;
		//int y=2;
		//System.out.println("x=1\ny=2\n"+"\nx+y= "+(x+y)+"\nx-y= "+(x-y)+"\nx/y= "+(x/y)+"\nx/y取余= "+(x%y)+"\n##########");
		//x=1;
		//y=2;
		//x=x+y++;		
		//System.out.println("x= "+x+"\ny= "+y);
		//x=1;
		//y=2;
		//x=x+(++y);
		//System.out.println("######"+"\nx= "+x+"\ny= "+y);
		//x=3;
		//y=2;
		//x=x+y--;
		//System.out.println("######"+"\nx= "+x+"\ny= "+y);
		//x=3;
		//y=2;
		//x=x+(--y);
		//System.out.println("######"+"\nx= "+x+"\ny= "+y);
		//x=1;
		//y=2;
		//x=x+y-(++y);
		//System.out.println("######"+"\nx= "+x+"\ny= "+y);
		//x=1;
		//y=2;
		//x=x+y-(++y);
		//System.out.println("######"+"\nx= "+x+"\ny= "+y);	
		//int a = 1;
		//int b = 2;
		//a = ++a + (b--) + ( a-b ) + b ;
		// a= 2 + 2 + 0 +2 =6;b=1;
		//++在后面 不参与计算  ；元素+1
		//++在前面 参与计算   元素和左值都+1
		//++在前面 如出现多个同元素 只会作用与最近的元素， 表达式是从左向右 ，操作数 从右向左。  
		 
	
		//创建一个键盘输入对象
		//System.out.println("请输入一个整数： ");
		//Scanner input=new Scanner(System.in);
		//int num_input=input.nextInt();
		//int num=10;
		//System.out.println("输入的整数和num一样大: "+(num==num_input));
		//System.out.println("请输入字符串: ");
		//String str_input=input.next();
		//String str="okokok";
		//System.out.println("输入的字符串是否和str一样: "+(str==str_input)+"\n==关系运算符代表的是他们是否共用一块相同的地址\nfalse，说明改变一个另一个不会改变\ntrue，改变一个，另一个也随之改变");
		////圆柱体体积公式 Π(r^2)h，pai 3.14，求体积
		//System.out.println("enter high: ");
		//int h=input.nextInt();
		//System.out.println("enter r: ");
		//int r=input.nextInt();
		//double res=3.14*r*r*h;
		//System.out.println(res);
		
		//5位数，求各位之和
		//int num_5=28452;
		//int a=num_5/10000;
		//int b=num_5/1000%10;
		//int c=num_5/100%10;
		//int d=num_5/10%10;
		//int e=num_5%10;
		//int res_num_5=a+b+c+d+e;
		//System.out.println("res_num_5: "+res_num_5);
		
		
		//输入天数，计算周数和多余天数
		//Scanner input=new Scanner(System.in);
		//System.out.println("enter total day: ");
		//int day=input.nextInt();
		//int week=day/7;
		//int day_left=day%7;
		//System.out.println("total day: "+day+"\nweek= "+week+"\nday_left= "+day_left);
		
		//& 和&&的区别
		//&   1.逻辑计算     
		//	  2.位运算
		// && 短路与   左边 表达式 右边      左真就真  ，左假就假   假的时候后面不看
		//| 和||同上
		//用&& 和|| 因为不做位运算 ，效率高。
		System.out.println(Integer.toBinaryString(-200>>3));
		System.out.println(Integer.toBinaryString(-200>>>3));
		String binary_num="01100100";
		int decimal_num=Integer.parseInt(binary_num,2);
		System.out.println(decimal_num);
		//通过两个操作数进行交换
		int a=2,b=1;
		a=a+b-(b=a);
		System.out.println(a+" and "+b);
		a=2;
		b=1;
		a=a^b;
		b=a^b;
		a=a^b;
		System.out.println(a+" and "+b);
	}
}
*/
 





